hvm: make dirty logging stop requiring physical pages of order > 0
authorKeir Fraser <keir.fraser@citrix.com>
Fri, 16 Nov 2007 18:33:24 +0000 (18:33 +0000)
committerKeir Fraser <keir.fraser@citrix.com>
Fri, 16 Nov 2007 18:33:24 +0000 (18:33 +0000)
commita36b32e53f7d146757e84587fe70c65c7b0a35fc
treefdf33675ccfa394a4043e1ca250498b5c1bd9913
parent503ddff7209dc73c7f0a1a99d59bb22a4f2d0e2f
hvm: make dirty logging stop requiring physical pages of order > 0

This patch re-implements the (x86) hypervisor dirty page log with a
simple four-level radix tree whose nodes are all single pages, thus
making migration require only order-0 pages (where before it required
at least an order-5 page).

Unlike the p2m radix tree implementation, the interior nodes of this
tree are NOT page table nodes.  I chose a lazy-allocation and -mapping
approach because most pages are not marked dirty while dirty-logging is
enabled.  There are doubtless situations (the 'stream' benchmark, for
example) where a more complex p2m-like approach is faster, but I'm not
sure they're worth the effort.

Signed-off-by: Dave Lively <dlively@virtualiron.com>
xen/arch/x86/mm/paging.c
xen/arch/x86/mm/shadow/private.h
xen/include/asm-x86/domain.h
xen/include/asm-x86/paging.h